*** Figure 1 ***
clear
set more off
set obs 2
g propensity = .8 if _n == 2
replace propensity = .2 if _n == 1
g neutral_treatment = .1
g exacerbating_treatment = (1/3)*propensity - (2/3) + (3/5)
g reducing_treatment = -(1/3)*propensity + (4/15)
g neutral = propensity + neutral_treatment
g exacerbating = propensity + exacerbating_treatment
g reducing = propensity + reducing_treatment
graph twoway line propensity neutral exacerbating reducing propensity
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity to Vote
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .plotregion1.plot1.style.editstyle line(color(gs10)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thin)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(green)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(color(blue)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.AddTextBox added_text editor .475 .5
gr_edit .plotregion1.added_text_new = 1
gr_edit .plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(small) color(gs10) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Control Group
gr_edit .plotregion1.AddTextBox added_text editor .8 .45
gr_edit .plotregion1.added_text_new = 2
gr_edit .plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(small) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Neutral Treatment
gr_edit .plotregion1.AddTextBox added_text editor .97 .54
gr_edit .plotregion1.added_text_new = 3
gr_edit .plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(small) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Treatment that Exacerbates the Gap
gr_edit .plotregion1.AddTextBox added_text editor .565 .2
gr_edit .plotregion1.added_text_new = 4
gr_edit .plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(small) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Treatment that Reduces the Gap
gr_edit .plotregion1.AddLine added_lines editor .56 .79 .613 .717
gr_edit .plotregion1.added_lines_new = 1
gr_edit .plotregion1.added_lines_rec = 1
gr_edit .plotregion1.added_lines[1].style.editstyle  linestyle( width(thin) color(green) pattern(solid)) headstyle( symbol(circle) linestyle( width(thin) color(green) pattern(solid)) fillcolor(gs9) size(medium) angle(stdarrow) backsymbol(none) backline( width(thin) color(black) pattern(solid)) backcolor(black) backsize(zero) backangle(stdarrow)) headpos(head) editcopy
graph save "Figure1.gph", replace
graph export "Figure1.tif", replace as(tif) height(4800) width(6600)
graph export "Figure1.eps", replace as(eps) cmyk(on)


*** CCES Analysis for Table 1 ***
clear
set more off
set matsize 5000
use "CCES08.dta"  
*Drop if not registered (to keep in line with GOTV samples)
drop if voter_status == "MovedUnregistered" | voter_status == "unregistered" | voter_status == "NoVoterFileMatch"
g turnout = vote_gen08 == 1
*Code Party Registration
g dem = CC402 == 1
g rep = CC402 == 2
g female = V208 == 2
g white = V211 == 1
g black = V211 == 2
g hispanic = V211 == 3
g hhsize = 1
replace hhsize = 1 + V241 if V241 < 98
replace hhsize = hhsize + 1 if V214 == 1 | V214 == 6
replace hhsize = 5 if hhsize > 5
g voted_primary = vote_pri08 == 1
g age = 2008 - V207
g age_category = 18
replace age_category = 25 if age >= 25
replace age_category = 30 if age >= 30
replace age_category = 35 if age >= 35
replace age_category = 40 if age >= 40
replace age_category = 45 if age >= 45
replace age_category = 50 if age >= 50
replace age_category = 55 if age >= 55
replace age_category = 60 if age >= 60
replace age_category = 65 if age >= 65
replace age_category = 70 if age >= 70
rename V206 state
rename V201 weight
drop if state == 51
*Generate Propensity Score
xi:reg turnout voted_primary white black hispanic dem rep female i.age_category i.state i.hhsize [aw = weight], r
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
*Coding outcome variables
g college = V213 >= 5
g familyincome = .
replace familyincome = 0 if V246 == 1
replace familyincome = 10000 if V246 == 2
replace familyincome = 15000 if V246 == 3
replace familyincome = 20000 if V246 == 4
replace familyincome = 25000 if V246 == 5
replace familyincome = 30000 if V246 == 6
replace familyincome = 40000 if V246 == 7
replace familyincome = 50000 if V246 == 8
replace familyincome = 60000 if V246 == 9
replace familyincome = 70000 if V246 == 10
replace familyincome = 80000 if V246 == 11
replace familyincome = 100000 if V246 == 12
replace familyincome = 120000 if V246 == 13
replace familyincome = 150000 if V246 == 14
g obama = CC327 == 2
g mccain = CC327 == 1
g church = V217 <=2
g bushapproval = CC335bus <= 2
g cutdomesticspending = CC309 == 2
g allowabortion = CC310 == 4
g affirmativeaction = CC313 <= 2
g withdrawtroops = CC316a == 1
g minwage = CC316b == 1
g bangaymarriage = CC316f == 1
g fedassistancehousing = CC316g == 1
g employed_retired = V209 == 1 | V209 == 2 | V209 == 5
g married = V214 == 1
g strongpid = CC307a == 1 | CC307a == 7
g pid7 = CC307a
replace pid7 = . if pid7 == 8
replace pid7 = (pid7 - 1)/6
replace V243 = . if V243 == 6
g ideology = (V243 - 1)/4
g strongideo = V243 == 1 | V243 == 5
*For Table 1
reg familyincome propensity [aw = weight], r
reg college propensity [aw = weight], r
reg church propensity [aw = weight], r
reg married propensity [aw = weight], r
reg employed_retired propensity [aw = weight], r
reg bushapproval propensity [aw = weight], r
reg allowabortion propensity [aw = weight], r
reg withdrawtroops propensity [aw = weight], r
reg ideology propensity [aw = weight], r
reg strongideo propensity [aw = weight], r
reg pid7 propensity [aw = weight], r
reg strongpid propensity [aw = weight], r
reg cutdomesticspending propensity [aw = weight], r
reg affirmativeaction propensity [aw = weight], r
reg minwage propensity [aw = weight], r
reg bangaymarriage propensity [aw = weight], r
reg fedassistancehousing propensity [aw = weight], r


*** CCAP Analysis for Table 1 ***
clear
set more off
use "CCAP08.dta"
reg income propensity [aw = weight], robust
reg college propensity [aw = weight], robust
reg church propensity [aw = weight], robust
reg married propensity [aw = weight], robust
reg employed_retired propensity [aw = weight], robust
reg bush propensity [aw = weight], robust
reg abortion propensity [aw = weight], robust
reg iraq propensity [aw = weight], robust
reg ideology propensity [aw = weight], robust
reg extreme propensity [aw = weight], robust
reg pid7 propensity [aw = weight], robust
reg strong propensity [aw = weight], robust
reg civilunions propensity [aw = weight], robust
reg healthcare propensity [aw = weight], robust
reg taxes propensity [aw = weight], robust
reg immigration propensity [aw = weight], robust


*** Gerber Green (2000) ***
clear
set more off
use "GG00.dta" 
rename v98 turnout
rename phongotv phone
g mail = mailings > 0
rename persngrp face
g treatment = 0
replace treatment = 1 if phone == 1
replace treatment = 2 if mail == 1
replace treatment = 3 if face == 1
replace treatment = 12 if phone == 1 & mail == 1
replace treatment = 13 if phone == 1 & face == 1
replace treatment = 23 if mail == 1 & face == 1
replace treatment = 123 if phone == 1 & mail == 1 & face == 1
drop phone mail face
g agecategory = 0
replace agecategory = 80 if age < 110
replace agecategory = 70 if age < 80
replace agecategory = 60 if age < 70
replace agecategory = 50 if age < 60
replace agecategory = 40 if age < 50
replace agecategory = 30 if age < 40
replace agecategory = 20 if age < 30
xi: reg turnout v96_1 i.agecategory i.ward majorpty if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
rename treatment category
g treatment = category > 0
g treatment_propensity = treatment*propensity
egen household = group(id1)
g mail = category == 0 | category == 2
g door = category == 0 | category == 3
g mail_door = category == 0 | category == 23
g phone_mail_door = category == 0 | category == 123
*Estimate Average Treatment Effects
xi:reg turnout i.category v96_1 i.agecategory, cluster(household)
*Contact Analysis for Table A1
rename cntany doorcontact
rename pcntany phonecontact
reg doorcontact propensity if category == 3 | category == 23 | category == 13 | category == 123, cluster(household)
reg phonecontact propensity if category == 1 | category == 12 | category == 13 | category == 123, cluster(household)
drop if category == 1 | category == 12 | category == 13
tab category
keep turnout treatment propensity treatment_propensity household mail door mail_door phone_mail_door
g study = "GG00"
g study_number = 1
order study study_number turnout treatment propensity treatment_propensity household
*For Table 3
reg turnout treatment propensity treatment_propensity if mail == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if door == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if mail_door == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if phone_mail_door == 1, cluster(household)
save "clean_GG00.dta", replace


*** Gerber, Green, and Nickerson (2003) ***
clear
set more off
use "GGN03.dta"
g dem = party == "D"
g rep = party == "R"
g female = sex == "F"
g white = race == "W"
g black = race == "B"
rename treatmen treatment
rename voted01 turnout
replace voted99 = 0 if voted99 == .
replace primary = 0 if primary == .
g voted_both = voted00*voted99
g age_category = 18
replace age_category = 30 if age >= 30
replace age_category = 40 if age >= 40
replace age_category = 50 if age >= 50
replace age_category = 60 if age >= 60
replace age_category = 70 if age >= 70
replace age_category = 90 if age >= 90 | age == .
g citycode = 1
replace citycode = 2 if city == "COLUMBUS"
replace citycode = 3 if city == "DETROIT"
replace citycode = 4 if city == "MINNEAPOLIS"
replace citycode = 5 if city == "Raleigh"
replace citycode = 6 if city == "ST PAUL"
g propensity = .
forvalues i = 1/6{
quietly{
xi:reg turnout voted* primary dem rep female white black i.age_category i.famsize if treatment == 0 & citycode == `i'
predict propensity`i'
sum propensity`i'
replace propensity`i' = (propensity`i' - r(mean))/r(sd)
replace propensity = propensity`i' if citycode == `i'
}
}
g treatment_propensity = treatment*propensity
*Run interactive tests for Table 3 and show that results are unchanced if we include fixed effects for walk list
forvalues i = 1/6{
reg turnout treatment propensity treatment_propensity if citycode == `i', robust
areg turnout treatment propensity treatment_propensity if citycode == `i', robust a(turf)
} 
*Contact Analysis for Table A1
forvalues i = 1/6 {
reg reached propensity if citycode == `i' & treatment == 1, r
}
drop if city == "COLUMBUS" | city == "Raleigh"
g study = "Bridgeport" if city == "Bridgeport"
replace study = "Detroit" if city == "DETROIT"
replace study = "Minneapolis" if city == "MINNEAPOLIS"
replace study = "St. Paul" if city == "ST PAUL"
g study_number = 2 if study == "Bridgeport"
replace study_number = 3 if study == "Detroit"
replace study_number = 4 if study == "Minneapolis"
replace study_number = 5 if study == "St. Paul"
sort study propensity treatment turnout
g household = _n
keep study study_number turnout treatment propensity treatment_propensity household
order study study_number turnout treatment propensity treatment_propensity household
*For Table 3
reg turnout treatment propensity treatment_propensity if study == "Bridgeport", robust
reg turnout treatment propensity treatment_propensity if study == "Detroit", robust
reg turnout treatment propensity treatment_propensity if study == "Minneapolis", robust
reg turnout treatment propensity treatment_propensity if study == "St. Paul", robust
save "clean_GGN03.dta", replace


*** Nickerson (2006) ***
*Stonybrook*
clear
set more off
use "N06.dta"
keep if site == "Stonybrook"
rename voted turnout 
rename trt treatment
g dem = party == "D" | party == "DEM"
g rep = party == "R" | party == "REP"
replace yob = 1900 + yob if yob < 1900
g age = 2000 - yob
replace age = 19 if age < 19
replace age = 20 if age > 20
xi:reg turnout dem rep i.age female if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
*For Table A1
reg conrate propensity if treatment == 1, robust
g study = "Stonybrook"
g study_number = 6
g household = _n
keep study study_number turnout treatment propensity treatment_propensity household
order study study_number turnout treatment propensity treatment_propensity household
*For Table 3
reg turnout treatment propensity treatment_propensity, robust
tab treatment
save "clean_N06.dta", replace

*Boston* for Table A1
clear
use "N06.dta"
keep if site == "Boston"
rename voted turnout 
rename trt treatment
g dem = party == "D" | party == "DEM"
g rep = party == "R" | party == "REP"
g votehistory = 0
replace votehistory = 1 if pvote == 1
replace votehistory = 2 if p2vote == 1
replace votehistory = 3 if pvote == 1 & p2vote == 1
replace yob = 1900 + yob if yob < 1900
g age = 2000 - yob
g age_category = 0
replace age_category = 18 if age > 16
replace age_category = 30 if age > 29
replace age_category = 40 if age > 39
replace age_category = 50 if age > 49
replace age_category = 60 if age > 59
replace age_category = 75 if age > 74 | age_category == 0
xi:reg turnout dem rep i.votehistory i.age_category i.ward female if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
reg conrate propensity if treatment == 1, robust

*Albany* for Table A1
clear
use "N06.dta"
keep if site == "Albany"
rename voted turnout 
rename trt treatment
g dem = party == "D" | party == "DEM"
g rep = party == "R" | party == "REP"
replace yob = 1900 + yob if yob < 1900
g age = 2000 - yob
replace age = 19 if age < 19
replace age = 20 if age > 20
xi:reg turnout dem rep i.age female if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
reg conrate propensity if treatment == 1, robust


*** Nickerson (2007) ***
clear
set more off
use "N07.dta"
rename voted02 turnout
g treatment = phonetrt > 0
drop volunteer
g volunteer = 0
replace volunteer = 1 if phonetrt == 0 | phonetrt == 2
g professional = 0
replace professional = 1 if phonetrt == 0 | phonetrt == 3
g vol_prof = 0
replace vol_prof = 1 if phonetrt == 0 | phonetrt == 1
replace age = 0 if age < 18
replace age = 0 if age == .
tostring ward, replace
replace famsize = 3 if famsize > 2
replace famsize = 3 if famsize == .
g white = race == "W"
g black = race == "B"
g dem = party == "D" | party == "DEMOCRATIC" | party == "Democratic" | party == "DEM"
g rep = party == "R" | party == "REP" | party == "REPUBLICAN" | party == "Republican"
*Testing for average treatment effects
xi:reg turnout i.phonetrt i.site, r
*Generating propensity score
xi:reg turnout voted00 dem rep i.age i.famsize i.site if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
*For Table 3
xi:reg turnout treatment propensity treatment_propensity if volunteer == 1, robust
xi:reg turnout treatment propensity treatment_propensity if professional == 1, robust
xi:reg turnout treatment propensity treatment_propensity if vol_prof == 1, robust
*Showing that results are unchanged with site fixed effects
xi:reg turnout treatment propensity treatment_propensity i.site if volunteer == 1, robust
xi:reg turnout treatment propensity treatment_propensity i.site if professional == 1, robust
xi:reg turnout treatment propensity treatment_propensity i.site if vol_prof == 1, robust
*Contact Analysis for Table A1
reg volconta propensity if volunteer == 1 & treatment == 1, robust
reg tfcontac propensity if professional == 1 & treatment == 1, robust
g study = "N07"
g study_number = 7
g household = _n
keep study study_number turnout treatment propensity treatment_propensity household volunteer professional vol_prof
order study study_number turnout treatment propensity treatment_propensity household volunteer professional vol_prof
save "clean_N07.dta", replace


*** Gerber, Green, and Larimer (2008) ***
clear
use "GGL08.dta"
drop *_mean
rename treatment category
g treatment = category > 0
g hawthorne = category == 0 | category == 1
g civic = category == 0 | category == 2
g neighbors = category == 0 | category == 3
g self = category == 0 | category == 4
rename voted turnout
egen household = group(hh_id)
*Testing Average Treatment Effects
xi:reg turnout i.category, cluster(household)
xi:areg turnout i.category, a(cluster) cluster(household)
*Generating propensity score
g age = 2006 - yob
g age_category = 20
replace age_category = 25 if age > 24
replace age_category = 30 if age > 29
replace age_category = 35 if age > 34
replace age_category = 40 if age > 39
replace age_category = 45 if age > 44
replace age_category = 50 if age > 49
replace age_category = 55 if age > 54
replace age_category = 60 if age > 59
replace age_category = 65 if age > 64
replace age_category = 70 if age > 69
replace age_category = 80 if age > 79
replace age_category = 90 if age > 89
qui: xi: reg turnout g2000 g2002 g2004 p2000 p2002 p2004 sex i.age_category i.hh_size if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
*For Table 3
reg turnout treatment propensity treatment_propensity if civic == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if hawthorne == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if self == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if neighbors == 1, cluster(household)
*Show that results are unchanged with cluster fixed effects
areg turnout treatment propensity treatment_propensity if civic == 1, cluster(household) a(cluster)
areg turnout treatment propensity treatment_propensity if hawthorne == 1, cluster(household) a(cluster)
areg turnout treatment propensity treatment_propensity if self == 1, cluster(household) a(cluster)
areg turnout treatment propensity treatment_propensity if neighbors == 1, cluster(household) a(cluster)
*For Figure 2
g atvar = (_n - 1)*.1
replace atvar = . if atvar > 4
replace atvar = atvar - 2
lpoly turnout propensity if treatment == 0, nograph gen(k_control) at(atvar) bw(.3) se(se_control)
lpoly turnout propensity if treatment == 1 & neighbors == 1, nograph gen(k_neighbors) at(atvar) bw(.3) se(se_neighbors)
graph twoway line k_control k_neighbors atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .7 .1 , tickset(major) ruletype(range) 
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.AddTextBox added_text editor .5217602928589242 .6439106843824356
gr_edit .plotregion1.added_text_new = 1
gr_edit .plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(small) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].style.editstyle color(red) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Treatment
gr_edit .plotregion1.AddTextBox added_text editor .3706798298221576 .9274362152324129
gr_edit .plotregion1.added_text_new = 2
gr_edit .plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(small) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Control
gr_edit .style.editstyle declared_ysize(3) editcopy
graph save "Figure2a.gph", replace
g diff = k_neighbors - k_control
g se_diff = sqrt(se_control^2 + se_neighbors^2)
g diff_upper = diff + se_diff
g diff_lower = diff - se_diff
graph twoway line diff_upper diff_lower diff atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .02 .12 .02 , tickset(major) ruletype(range) 
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(width(medthick)) editcopy
gr_edit .style.editstyle declared_ysize(3) editcopy
graph save "Figure2b.gph", replace
graph combine "Figure2a.gph" "Figure2b.gph", rows(2)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .style.editstyle declared_ysize(6) editcopy
graph save "Figure2.gph", replace
graph export "Figure2.tif", replace as(tif) height(7200) width(6600) 
graph export "Figure2.eps", replace as(eps) cmyk(on)
g study = "GGL08"
g study_number = 8
keep study study_number turnout treatment propensity treatment_propensity household civic hawthorne self neighbors
order study study_number turnout treatment propensity treatment_propensity household civic hawthorne self neighbors
save "clean_GGL08.dta", replace


*** Middleton and Green (2008) ***
clear
set more off
use "MG08.dta" 
rename treat2 treatment
rename voted turnout
xi:reg turnout dm* i.state if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
areg turnout treatment propensity treatment_propensity, cluster(block_id_new) a(block_id)
egen household = group(block_id_new)
egen block = group(block_id)
g study = "MG08"
g study_number = 9
keep study study_number turnout treatment propensity treatment_propensity household block
order study study_number turnout treatment propensity treatment_propensity household block
save "clean_MG08.dta", replace


*** Nickerson (2008) ***
clear
set more off
use "N08.dta"
rename treatment category
g treatment = category == 1
rename voted02p turnout
rename hsecontact contact
egen household = group(denver family)
g dem = party == "DEMOCRATIC"
g rep = party == "REPUBLICAN"
g male = gender == "M"
g female = gender == "F"
g age_category = 0
replace age_category = 18 if age >= 18
replace age_category = 25 if age >= 25
replace age_category = 30 if age >= 30
replace age_category = 35 if age >= 35
replace age_category = 40 if age >= 40
replace age_category = 45 if age >= 45
replace age_category = 50 if age >= 50
replace age_category = 55 if age >= 55
replace age_category = 60 if age >= 60
replace age_category = 65 if age >= 65
replace age_category = 70 if age >= 70
replace age_category = 75 if age >= 75
replace age_category = 80 if age >= 80
replace age_category = 0 if age >= 100
xi:reg turnout i.age_category i.turf dem rep female voted* if denver == 1
predict propensity if denver == 1
sum propensity if denver == 1
replace propensity = (propensity - r(mean))/r(sd) if denver == 1
xi:reg turnout i.age_category i.turf dem rep female voted* if denver == 0
predict propensity2 if denver == 0
sum propensity2 if denver == 0
replace propensity2 = (propensity2 - r(mean))/r(sd) if denver == 0
replace propensity = propensity2 if denver == 0
g treatment_propensity = treatment*propensity
*average ITT effects
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 1, cluster(household)
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 0, cluster(household)
*contacted households
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 1 & category < 3 & contact == 1, cluster(household)
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 0 & category < 3 & contact == 1, cluster(household)
*contacted individuals
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 1 & category < 3 & reached == 1, r
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 0 & category < 3 & reached == 1, r
*non-contacted dndividuals in contacted households
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 1 & category < 3 & contact == 1 & reached == 0, r
xi:reg turnout treatment i.age_category i.turf dem rep female voted* if denver == 0 & category < 3 & contact == 1 & reached == 0, r
*For Table A1
reg contact propensity if denver == 1 & treatment == 1, cluster(household)
reg contact propensity if denver == 0 & treatment == 1, cluster(household)
*For Table 3
reg turnout treatment propensity treatment_propensity if denver == 0, cluster(household)
*For Appendix
*contacted households only
reg turnout treatment propensity treatment_propensity if denver == 0 & contact == 1 & category < 3, cluster(household)
reg turnout treatment propensity treatment_propensity if denver == 1 & contact == 1 & category < 3, cluster(household)
*contacted individuals only
reg turnout treatment propensity treatment_propensity if denver == 0 & reached == 1 & category < 3, r
reg turnout treatment propensity treatment_propensity if denver == 1 & reached == 1 & category < 3, r
drop if denver == 1
g study = "N08"
g study_number = 10
keep study study_number turnout treatment propensity treatment_propensity household
order study study_number turnout treatment propensity treatment_propensity household
save "clean_N08.dta", replace


*** Dale and Strauss (2009) ***
clear
set more off
use "DS09.dta"
drop if experiment == 2
rename treated treatment
rename voted turnout
g category = 0 
replace category = 1 if dem_msg == 1
replace category = 2 if elec_msg == 1
replace category = 3 if dem_msg == 1 & hotline == 1
replace category = 4 if elec_msg == 1 & hotline == 1
*Test average effects
xi:reg turnout i.category, r
reg turnout treatment, r
*Generate propensity score
drop black hispanic
g white = race == "White"
g black = race == "Black"
g hispanic = race == "Hispanic"
replace age_4cat = 5 if age_4cat == .
replace priorvotes = 6 if priorvotes > 6
xi: reg turnout i.age_4cat i.priorvotes i.st female white black hispanic new_reg if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
*For Table 3
reg turnout treatment propensity treatment_propensity, r
g study = "DS09"
g study_number = 11
g household = _n
keep study study_number turnout treatment propensity treatment_propensity household
order study study_number turnout treatment propensity treatment_propensity household
save "clean_DS09.dta", replace


*** Gerber, Green, and Larimer (2010) ***
clear
set more off
use "GGL10.dta" 
g category = 0
replace category = 1 if civic == 1
replace category = 2 if shownabstained == 1
replace category = 3 if shownvoted == 1
tab category
g treatment = category > 0
rename og2007 turnout
egen household = group(hh)
xi:reg turnout i.category, cluster(household)
drop civic shownabstained shownvoted
g civic = category == 0 | category == 1
g shame = category == 0 | category == 2
g pride = category == 0 | category == 3
*generate propensity score
reg turnout og2005 g2006 p2006 p2004 g2004 if control == 1
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
*For Table 3
reg turnout treatment propensity treatment_propensity if civic == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if shame == 1, cluster(household)
reg turnout treatment propensity treatment_propensity if pride == 1, cluster(household)
g study = "GGL10"
g study_number = 12
keep study study_number turnout treatment propensity treatment_propensity household civic shame pride
order study study_number turnout treatment propensity treatment_propensity household
save "clean_GGL10.dta", replace


*** Gerber, Huber, and Washington (2010) ***
clear
set more off
use  "GHW10.dta
drop if pid7 < 3 | pid7 > 5
rename treat treatment
replace voted2008 = 0 if voted2008 == .
rename voted2008 turnout
drop age2
g age2 = age^2
g gender = 0
replace gender = 1 if vffemale == 1
replace gender = 2 if vffemale == 0
replace interest = 0 if interest == .
replace bushapp = 0 if bushapp == .
xi:reg turnout voted2006 voted2004 voted2002 voted2000 voted1998 voted1996 age* regyear* vffemale twonames i.pid7 i.interest vote2000* i.bushapp if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
reg turnout treatment propensity treatment_propensity, r
g study = "GHW10"
g study_number = 13
g household = _n
keep study study_number turnout treatment propensity treatment_propensity household
order study study_number turnout treatment propensity treatment_propensity household
save "clean_GHW10.dta", replace


*** Nickerson and Rogers (2010) ***
clear
set more off
use "NR10.dta"
rename vote_prespri turnout
rename contacted contact
replace nick_hh_id = 0 if nick_hh_id == .
egen household = group(nick_hh_id)
g votehistory06 = 0
replace votehistory06 = 1 if vh_e2006g == 1
replace votehistory06 = 2 if vh_e2006p == 1
replace votehistory06 = 3 if vh_e2006p == 1 & vh_e2006g == 1
qui: xi:reg turnout i.votehistory06 i.age_cat black female hh2 hh3 i.county if treatment == 0
predict propensity
sum propensity
replace propensity = (propensity - r(mean))/r(sd)
g treatment_propensity = treatment*propensity
*Contact analysis for Table A1
reg contact propensity if treatment == 1, cluster(household)
*Checking average treatment effects
xi:reg turnout i.category hh2 hh3, r
drop if category == 1 | category == 2
*For Table 3
reg turnout treatment propensity treatment_propensity hh2 hh3, cluster(household)
*Check whether hh dummies matter
reg turnout treatment propensity treatment_propensity, cluster(household)
g study = "NR10"
g study_number = 14
g block = 1
replace block = 2 if hh2 == 1
replace block = 3 if hh3 == 1
keep study study_number turnout treatment propensity treatment_propensity household block
order study study_number turnout treatment propensity treatment_propensity household block
save "clean_NR10.dta", replace


*** Pooled Analysis ***
clear
set more off
use "clean_GG00.dta"
append using "clean_GGN03.dta"
append using "clean_N06.dta"
append using "clean_N07.dta"
append using "clean_GGL08.dta"
append using "clean_MG08.dta"
append using "clean_N08.dta"
append using "clean_DS09.dta"
append using "clean_GGL10.dta"
append using "clean_GHW10.dta"
append using "clean_NR10.dta"
forvalues i = 1/14 {
g study_`i' = study_number == `i'
g propensity_`i' = propensity*study_`i'
}
g household_id = study_number*1000000 + household
replace study_number = study_number*10000 + block if study_number == 14 | study_number == 9
*For Table 3
xi:areg turnout treatment treatment_propensity propensity_*, cluster(household_id) a(study_number)

*** Figure 3 and Figures A3-A16 ***
g atvar = (_n - 1)*.01 - 2
replace atvar = . if atvar > 2
*Gerber and Green (2000)
lpoly turnout propensity if study == "GG00" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "GG00" & treatment == 1 & mail == 1, nograph gen(k_mail) at(atvar) bw(.7) se(se_mail)
lpoly turnout propensity if study == "GG00" & treatment == 1 & door == 1, nograph gen(k_door) at(atvar) bw(.7) se(se_door)
lpoly turnout propensity if study == "GG00" & treatment == 1 & mail_door == 1, nograph gen(k_mail_door) at(atvar) bw(.7) se(se_mail_door)
lpoly turnout propensity if study == "GG00" & treatment == 1 & phone_mail_door == 1, nograph gen(k_phone_mail_door) at(atvar) bw(.7) se(se_phone_mail_door)
g diff_gg00_mail = k_mail - k_control
g diff_gg00_door = k_door - k_control
g diff_gg00_mail_door = k_mail_door - k_control
g diff_gg00_phone_mail_door = k_phone_mail_door - k_control
hist propensity if study == "GG00"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .6 .1, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA3_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .1 .8 .1 , tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(blue)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(color(green)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot5.style.editstyle line(color(orange)) editcopy
gr_edit .plotregion1.plot5.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .4 .05
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Control
gr_edit plotregion1.AddTextBox added_text editor .5 .5
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Mail
gr_edit plotregion1.AddTextBox added_text editor .5 -.1
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Door
gr_edit plotregion1.AddTextBox added_text editor .24 -2
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Mail+Door
gr_edit plotregion1.AddTextBox added_text editor .77 1
gr_edit plotregion1.added_text_new = 5
gr_edit plotregion1.added_text_rec = 5
gr_edit .plotregion1.added_text[5].style.editstyle  angle(default) size(medsmall) color(orange) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[5].text = {}
gr_edit .plotregion1.added_text[5].text.Arrpush Phone+Mail+Door
graph save "FigureA3_b.gph", replace
foreach i in mail door mail_door phone_mail_door {
g se_diff_`i' = sqrt(se_control^2 + se_`i'^2)
g upper_`i' = diff_gg00_`i' + se_diff_`i'
g lower_`i' = diff_gg00_`i' - se_diff_`i'
}
graph twoway line upper_* lower_* diff_gg00_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.02 .08 .02 , tickset(major) ruletype(range) 
forvalues i = 1/8 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
}
forvalues i = 9/12 {
gr_edit .plotregion1.plot`i'.style.editstyle line(width(thick)) editcopy
}
forvalues i = 1(4)9 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(red)) editcopy
}
forvalues i = 2(4)10 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(blue)) editcopy
}
forvalues i = 3(4)11 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(green)) editcopy
}
forvalues i = 4(4)12 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(orange)) editcopy
}
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .008 .5
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Mail
gr_edit plotregion1.AddTextBox added_text editor .059 .1
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Door
gr_edit plotregion1.AddTextBox added_text editor .025 -2
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Mail+Door
gr_edit plotregion1.AddTextBox added_text editor .065 1.3
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(medsmall) color(orange) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Phone+Mail+Door
graph save "FigureA3_c.gph", replace
drop k_* upper_* lower_* se_*

***Gerber, Green, and Nickerson (2003)***
*Bridgeport
lpoly turnout propensity if study == "Bridgeport" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "Bridgeport" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_bridgeport = k_treated - k_control
replace diff_bridgeport = . if atvar > 1 | atvar < -1
hist propensity if study == "Bridgeport"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 1.2 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA4_a.gph", replace
sort atvar 
graph twoway line k_* atvar if abs(atvar) <= 1
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .3 .1 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA4_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_bridgeport + se_diff
g lower_ = diff_bridgeport - se_diff
sort atvar
graph twoway line upper_ lower_ diff_bridgeport atvar if abs(atvar) <= 1
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .08 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA4_c.gph", replace
drop k_* upper_* lower_* se_*

*Detroit
lpoly turnout propensity if study == "Detroit" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "Detroit" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_detroit = k_treated - k_control
qui:sum propensity if study == "Detroit"
replace diff_detroit = . if atvar < r(min)
replace k_control = . if atvar < r(min)
replace k_treated = . if atvar < r(min)
hist propensity if study == "Detroit"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 1.8 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA5_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .9 .1 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA5_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_detroit + se_diff
g lower_ = diff_detroit - se_diff
sort atvar
graph twoway line upper_ lower_ diff_detroit atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.02 .06 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA5_c.gph", replace
drop k_* upper_* lower_* se_*

*Minneapolis
lpoly turnout propensity if study == "Minneapolis" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "Minneapolis" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_minneapolis = k_treated - k_control
qui:sum propensity if study == "Minneapolis"
replace diff_minneapolis = . if atvar < r(min)
replace k_control = . if atvar < r(min)
replace k_treated = . if atvar < r(min)
hist propensity if study == "Minneapolis"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 1 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA6_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .9 .1 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA6_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_minneapolis + se_diff
g lower_ = diff_minneapolis - se_diff
sort atvar
graph twoway line upper_ lower_ diff_minneapolis atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.02 .14 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA6_c.gph", replace
drop k_* upper_* lower_* se_*

*St. Paul
lpoly turnout propensity if study == "St. Paul" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "St. Paul" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_stpaul = k_treated - k_control
qui:sum propensity if study == "St. Paul"
replace diff_stpaul = . if atvar < r(min)
replace k_control = . if atvar < r(min)
replace k_treated = . if atvar < r(min)
hist propensity if study == "St. Paul"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 1.2 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA7_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .8 .1 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA7_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_stpaul + se_diff
g lower_ = diff_stpaul - se_diff
sort atvar
graph twoway line upper_ lower_ diff_stpaul atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .08 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA7_c.gph", replace
drop k_* upper_* lower_* se_*

*Nickerson (2006) - Stonybrook
lpoly turnout propensity if study == "Stonybrook" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "Stonybrook" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
qui:sum propensity if study == "Stonybrook"
replace k_control = . if atvar > r(max)
replace k_control = . if atvar < r(min)
replace k_treated = . if atvar > r(max)
replace k_treated = . if atvar < r(min)
g diff_stonybrook = k_treated - k_control
hist propensity if study == "Stonybrook"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 1.8 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA8_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .6 .8 .1 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA8_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_stonybrook + se_diff
g lower_ = diff_stonybrook - se_diff
sort atvar
graph twoway line upper_ lower_ diff_stonybrook atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .14 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA8_c.gph", replace
drop k_* upper_* lower_* se_*

*Nickerson (2007)
lpoly turnout propensity if study == "N07" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "N07" & treatment == 1 & volunteer == 1, nograph gen(k_volunteer) at(atvar) bw(.7) se(se_volunteer)
lpoly turnout propensity if study == "N07" & treatment == 1 & professional == 1, nograph gen(k_professional) at(atvar) bw(.7) se(se_professional)
lpoly turnout propensity if study == "N07" & treatment == 1 & vol_prof == 1, nograph gen(k_vol_prof) at(atvar) bw(.7) se(se_vol_prof)
g diff_n07_volunteer = k_volunteer - k_control
g diff_n07_professional = k_professional - k_control
g diff_n07_vol_prof = k_vol_prof - k_control
hist propensity if study == "N07"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .6 .1, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA9_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .1 .5 .1 , tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(blue)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(color(green)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .27 .05
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Control
gr_edit plotregion1.AddTextBox added_text editor .45 1.6
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Volunteer
gr_edit plotregion1.AddTextBox added_text editor .435 .6
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Professional
gr_edit plotregion1.AddTextBox added_text editor .22 -1.7
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Volunteer+Professional
graph save "FigureA9_b.gph", replace
foreach i in volunteer professional vol_prof {
g se_diff_`i' = sqrt(se_control^2 + se_`i'^2)
g upper_`i' = diff_n07_`i' + se_diff_`i'
g lower_`i' = diff_n07_`i' - se_diff_`i'
}
graph twoway line upper_* lower_* diff_n07_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.01 .03 .01 , tickset(major) ruletype(range) 
forvalues i = 1/6 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
}
forvalues i = 7/9 {
gr_edit .plotregion1.plot`i'.style.editstyle line(width(thick)) editcopy
}
forvalues i = 1(3)7 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(red)) editcopy
}
forvalues i = 2(3)8 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(blue)) editcopy
}
forvalues i = 3(3)9 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(green)) editcopy
}
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .003 .5
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Volunteer
gr_edit plotregion1.AddTextBox added_text editor .025 -.5
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Professional
gr_edit plotregion1.AddTextBox added_text editor .023 -2
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Volunteer+Professional
graph save "FigureA9_c.gph", replace
drop k_* upper_* lower_* se_*

*Gerber, Green, Larimer (2008)
lpoly turnout propensity if study == "GGL08" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "GGL08" & treatment == 1 & civic == 1, nograph gen(k_civic) at(atvar) bw(.7) se(se_civic)
lpoly turnout propensity if study == "GGL08" & treatment == 1 & hawthorne == 1, nograph gen(k_hawthorne) at(atvar) bw(.7) se(se_hawthorne)
lpoly turnout propensity if study == "GGL08" & treatment == 1 & self == 1, nograph gen(k_self) at(atvar) bw(.7) se(se_self)
lpoly turnout propensity if study == "GGL08" & treatment == 1 & neighbors == 1, nograph gen(k_neighbors) at(atvar) bw(.7) se(se_neighbors)
g diff_ggl08_civic = k_civic - k_control
g diff_ggl08_hawthorne = k_hawthorne - k_control
g diff_ggl08_self = k_self - k_control
g diff_ggl08_neighbors = k_neighbors - k_control
hist propensity if study == "GGL08"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .6 .1, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA10_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .1 .6 .1 , tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(blue)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(color(green)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot5.style.editstyle line(color(orange)) editcopy
gr_edit .plotregion1.plot5.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .28 0
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Control
gr_edit plotregion1.AddTextBox added_text editor .4 1.5
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Civic
gr_edit plotregion1.AddTextBox added_text editor .13 -1.7
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Hawthorne
gr_edit plotregion1.AddTextBox added_text editor .52 1.7
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Self
gr_edit plotregion1.AddTextBox added_text editor .47 .5
gr_edit plotregion1.added_text_new = 5
gr_edit plotregion1.added_text_rec = 5
gr_edit .plotregion1.added_text[5].style.editstyle  angle(default) size(medsmall) color(orange) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[5].text = {}
gr_edit .plotregion1.added_text[5].text.Arrpush Neighbors
graph save "FigureA10_b.gph", replace
foreach i in civic hawthorne self neighbor {
g se_diff_`i' = sqrt(se_control^2 + se_`i'^2)
g upper_`i' = diff_ggl08_`i' + se_diff_`i'
g lower_`i' = diff_ggl08_`i' - se_diff_`i'
}
graph twoway line upper_* lower_* diff_ggl08_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .10 .02 , tickset(major) ruletype(range) 
forvalues i = 1/8 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
}
forvalues i = 9/12 {
gr_edit .plotregion1.plot`i'.style.editstyle line(width(thick)) editcopy
}
forvalues i = 1(4)9 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(red)) editcopy
}
forvalues i = 2(4)10 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(blue)) editcopy
}
forvalues i = 3(4)11 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(green)) editcopy
}
forvalues i = 4(4)12 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(orange)) editcopy
}
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .015 .8
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Civic
gr_edit plotregion1.AddTextBox added_text editor .038 .5
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Hawthorne
gr_edit plotregion1.AddTextBox added_text editor .062 .7
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Self
gr_edit plotregion1.AddTextBox added_text editor .094 -.2
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(medsmall) color(orange) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Neighbors
graph save "FigureA10_c.gph", replace
drop k_* upper_* lower_* se_*

*Middleton and Green (2008)
lpoly turnout propensity if study == "MG08" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "MG08" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_mg08 = k_treated - k_control
hist propensity if study == "MG08"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .8 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA11_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .2 .8 .2 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA11_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_mg08 + se_diff
g lower_ = diff_mg08 - se_diff
sort atvar
graph twoway line upper_ lower_ diff_mg08 atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.01 .04 .01 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA11_c.gph", replace
drop k_* upper_* lower_* se_*

*Nickerson (2008)
lpoly turnout propensity if study == "N08" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "N08" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
qui:sum propensity if study == "N08"
replace k_control = . if atvar < r(min)
replace k_treated = . if atvar < r(min)
g diff_n08 = k_treated - k_control
hist propensity if study == "N08"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .8 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA12_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .6 .2 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA12_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_n08 + se_diff
g lower_ = diff_n08 - se_diff
sort atvar
graph twoway line upper_ lower_ diff_n08 atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.01 .15 .04 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA12_c.gph", replace
drop k_* upper_* lower_* se_*

*Dale and Strauss (2009)
lpoly turnout propensity if study == "DS09" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "DS09" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_ds09 = k_treated - k_control
hist propensity if study == "DS09"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .6 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA13_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .3 .7 .1 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA13_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_ds09 + se_diff
g lower_ = diff_ds09 - se_diff
sort atvar
graph twoway line upper_ lower_ diff_ds09 atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.02 .06 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA13_c.gph", replace
drop k_* upper_* lower_* se_*

*Gerber, Green, and Larimer (2010)
lpoly turnout propensity if study == "GGL10" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "GGL10" & treatment == 1 & civic == 1, nograph gen(k_civic) at(atvar) bw(.7) se(se_civic)
lpoly turnout propensity if study == "GGL10" & treatment == 1 & shame == 1, nograph gen(k_shame) at(atvar) bw(.7) se(se_shame)
lpoly turnout propensity if study == "GGL10" & treatment == 1 & pride == 1, nograph gen(k_pride) at(atvar) bw(.7) se(se_pride)
qui:sum propensity if study == "GGL10"
replace k_control = . if atvar < r(min)
replace k_civic = . if atvar < r(min)
replace k_shame = . if atvar < r(min)
replace k_pride = . if atvar < r(min)
g diff_ggl10_civic = k_civic - k_control
g diff_ggl10_shame = k_shame - k_control
g diff_ggl10_pride = k_pride - k_control
hist propensity if study == "GGL10"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 7 1, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA14_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .1 .5 .1 , tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(blue)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(color(green)) editcopy
gr_edit .plotregion1.plot4.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .18 0
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Control
gr_edit plotregion1.AddTextBox added_text editor .35 1.1
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Civic
gr_edit plotregion1.AddTextBox added_text editor .45 1.2
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Shame
gr_edit plotregion1.AddTextBox added_text editor .4 1.1
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit .plotregion1.added_text[4].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[4].text = {}
gr_edit .plotregion1.added_text[4].text.Arrpush Pride
graph save "FigureA14_b.gph", replace
foreach i in civic shame pride {
g se_diff_`i' = sqrt(se_control^2 + se_`i'^2)
g upper_`i' = diff_ggl10_`i' + se_diff_`i'
g lower_`i' = diff_ggl10_`i' - se_diff_`i'
}
graph twoway line upper_* lower_* diff_ggl10_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .12 .04 , tickset(major) ruletype(range) 
forvalues i = 1/6 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
}
forvalues i = 7/9 {
gr_edit .plotregion1.plot`i'.style.editstyle line(width(thick)) editcopy
}
forvalues i = 1(3)7 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(red)) editcopy
}
forvalues i = 2(3)8 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(blue)) editcopy
}
forvalues i = 3(3)9 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(green)) editcopy
}
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit plotregion1.AddTextBox added_text editor .015 1
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size(medsmall) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[1].text = {}
gr_edit .plotregion1.added_text[1].text.Arrpush Civic
gr_edit plotregion1.AddTextBox added_text editor .075 .2
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size(medsmall) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[2].text = {}
gr_edit .plotregion1.added_text[2].text.Arrpush Shame
gr_edit plotregion1.AddTextBox added_text editor .025 -1.5
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit .plotregion1.added_text[3].style.editstyle  angle(default) size(medsmall) color(green) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[3].text = {}
gr_edit .plotregion1.added_text[3].text.Arrpush Pride
graph save "FigureA14_c.gph", replace
drop k_* upper_* lower_* se_*

*Gerber, Huber, and Washington (2010)
lpoly turnout propensity if study == "GHW10" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "GHW10" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_ghw10 = k_treated - k_control
hist propensity if study == "GHW10"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .4 .1, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA15_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .12 .04 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA15_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_ghw10 + se_diff
g lower_ = diff_ghw10 - se_diff
sort atvar
graph twoway line upper_ lower_ diff_ghw10 atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .06 .02 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA15_c.gph", replace
drop k_* upper_* lower_* se_*

*Nickerson and Rogers (2010)
lpoly turnout propensity if study == "NR10" & treatment == 0, nograph gen(k_control) at(atvar) bw(.7) se(se_control)
lpoly turnout propensity if study == "NR10" & treatment == 1, nograph gen(k_treated) at(atvar) bw(.7) se(se_treated)
g diff_nr10 = k_treated - k_control
hist propensity if study == "NR10"
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Density
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .8 .2, tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range)
gr_edit .plotregion1.plot1.style.editstyle area(shadestyle(color(gs12))) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(black))) editcopy
graph save "FigureA16_a.gph", replace
sort atvar 
graph twoway line k_* atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Pr(Turnout)
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule .2 .8 .2 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(width(thick)) editcopy
gr_edit .style.editstyle declared_ysize(2.2) editcopy
graph save "FigureA16_b.gph", replace
g se_diff = sqrt(se_control^2 + se_treated^2)
g upper_ = diff_nr10 + se_diff
g lower_ = diff_nr10 - se_diff
sort atvar
graph twoway line upper_ lower_ diff_nr10 atvar
gr_edit .style.editstyle declared_ysize(2.2) editcopy
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .03 .01 , tickset(major) ruletype(range) 
gr_edit .xaxis1.reset_rule -2 2 1, tickset(major) ruletype(range) 
forvalues i = 1/2 {
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(color(black)) editcopy
}
gr_edit .plotregion1.plot3.style.editstyle line(width(thick)) editcopy
gr_edit .plotregion1.plot3.style.editstyle line(color(black)) editcopy
graph save "FigureA16_c.gph", replace
drop k_* upper_* lower_* se_*

*** Figure 3 ***
sort atvar
graph twoway line diff_gg00_mail-diff_gg00_mail_door diff_stpaul-diff_ggl08_civic diff_ds09 diff_ggl10_civic diff_ggl10_pride-diff_nr10 diff_detroit diff_mg08 diff_gg00_phone_mail_door diff_bridgeport diff_minneapolis diff_ggl08_hawthorne-diff_ggl08_neighbors diff_n08 diff_ggl10_shame atvar
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Conditional Average Treatment Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Propensity
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule 0 .12 .04 , tickset(major) ruletype(range) 
forvalues i = 1/14 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(gs14)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(width(thin)) editcopy
}
forvalues i = 15/16 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(blue)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dot)) editcopy
}
forvalues i = 17/24 {
gr_edit .plotregion1.plot`i'.style.editstyle line(color(red)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(width(medthick)) editcopy
gr_edit .plotregion1.plot`i'.style.editstyle line(pattern(dash)) editcopy
}

gr_edit plotregion1.AddTextBox added_text editor -.01 1.75
gr_edit plotregion1.added_text_new = 1
gr_edit plotregion1.added_text_rec = 1
gr_edit plotregion1.AddTextBox added_text editor .01 1.5
gr_edit plotregion1.added_text_new = 2
gr_edit plotregion1.added_text_rec = 2
forvalues i = 1/2 {
gr_edit .plotregion1.added_text[`i'].style.editstyle  angle(default) size(small) color(blue) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[`i'].text = {}
}
gr_edit .plotregion1.added_text[1].text.Arrpush Detroit
gr_edit .plotregion1.added_text[2].text.Arrpush MoveOn
gr_edit plotregion1.AddTextBox added_text editor .065 1.187
gr_edit plotregion1.added_text_new = 3
gr_edit plotregion1.added_text_rec = 3
gr_edit plotregion1.AddTextBox added_text editor .04 -.15
gr_edit plotregion1.added_text_new = 4
gr_edit plotregion1.added_text_rec = 4
gr_edit plotregion1.AddTextBox added_text editor 0 -.3
gr_edit plotregion1.added_text_new = 5
gr_edit plotregion1.added_text_rec = 5
gr_edit plotregion1.AddTextBox added_text editor .033 1.3
gr_edit plotregion1.added_text_new = 6
gr_edit plotregion1.added_text_rec = 6
gr_edit plotregion1.AddTextBox added_text editor .05 1.3
gr_edit plotregion1.added_text_new = 7
gr_edit plotregion1.added_text_rec = 7
gr_edit plotregion1.AddTextBox added_text editor .095 -.05
gr_edit plotregion1.added_text_new = 8
gr_edit plotregion1.added_text_rec = 8
gr_edit plotregion1.AddTextBox added_text editor .12 1.25
gr_edit plotregion1.added_text_new = 9
gr_edit plotregion1.added_text_rec = 9
gr_edit plotregion1.AddTextBox added_text editor .07 .25
gr_edit plotregion1.added_text_new = 10
gr_edit plotregion1.added_text_rec = 10
forvalues i = 3/10 {
gr_edit .plotregion1.added_text[`i'].style.editstyle  angle(default) size(small) color(red) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(thin) color(black) pattern(solid)) box_alignment(east) editcopy
gr_edit .plotregion1.added_text[`i'].text = {}
}
gr_edit .plotregion1.added_text[3].text.Arrpush Phone+Mail+Door
gr_edit .plotregion1.added_text[4].text.Arrpush Bridgeport
gr_edit .plotregion1.added_text[5].text.Arrpush Minneapolis03
gr_edit .plotregion1.added_text[6].text.Arrpush Hawthorne
gr_edit .plotregion1.added_text[7].text.Arrpush Self
gr_edit .plotregion1.added_text[8].text.Arrpush Neighbors
gr_edit .plotregion1.added_text[9].text.Arrpush Minneapolis08
gr_edit .plotregion1.added_text[10].text.Arrpush Shame
gr_edit .xaxis1.plotregion.yscale.curmin = -.01
graph save "Figure3.gph", replace
graph export "Figure3.tif", replace as(tif) height(4800) width(6600)
graph export "Figure3.eps", replace as(eps) cmyk(on)


*** Figures A1 and A2 ***
clear
set more off
use "clean_GG00.dta"
append using "clean_GGN03.dta"
append using "clean_N06.dta"
append using "clean_N07.dta"
append using "clean_GGL08.dta"
append using "clean_MG08.dta"
append using "clean_N08.dta"
append using "clean_DS09.dta"
append using "clean_GGL10.dta"
append using "clean_GHW10.dta"
append using "clean_NR10.dta"
replace block = 0 if block == .
g intervention_1 = study == "GG00" & mail == 1
g intervention_2 = study == "GG00" & door == 1
g intervention_3 = study == "GG00" & mail_door == 1
g intervention_4 = study == "GG00" & phone_mail_door == 1
g intervention_5 = study == "Bridgeport"
g intervention_6 = study == "Detroit"
g intervention_7 = study == "Minneapolis"
g intervention_8 = study == "St. Paul"
g intervention_9 = study == "Stonybrook"
g intervention_10 = study == "N07" & volunteer == 1
g intervention_11 = study == "N07" & professional == 1
g intervention_12 = study == "N07" & vol_prof
g intervention_13 = study == "GGL08" & civic == 1
g intervention_14 = study == "GGL08" & hawthorne == 1
g intervention_15 = study == "GGL08" & self == 1
g intervention_16 = study == "GGL08" & neighbors == 1
g intervention_17 = study == "MG08" 
g intervention_18 = study == "N08"  
g intervention_19 = study == "DS09" 
g intervention_20 = study == "GGL10" & civic == 1
g intervention_21 = study == "GGL10" & shame == 1
g intervention_22 = study == "GGL10" & pride == 1
g intervention_23 = study == "GHW10"
g intervention_24 = study == "NR10"
g household_id = study_number*1000000 + household
matrix B = J(24, 7, .)
forvalues i = 1/24 {
quietly{
sum turnout if treatment == 0 & intervention_`i' == 1
matrix B[`i', 1] = r(mean)
matrix B[`i', 2] = r(N)
sum turnout if treatment == 1 & intervention_`i' == 1
matrix B[`i', 3] = r(N)
areg turnout treatment propensity treatment_propensity if intervention_`i' == 1, a(block) cluster(household_id)
matrix B[`i', 4] = _b[treatment]
matrix B[`i', 5] = _b[treatment_propensity]
matrix B[`i', 6] = abs(_b[treatment_propensity]/_se[treatment_propensity])
matrix B[`i', 7] = `i'
}
disp `i'
}
svmat B
keep B1-B7
drop if B1 == .
g name = "Mail" if B7 == 1
replace name = "Door" if B7 == 2
replace name = "Mail+Door" if B7 == 3
replace name = "Phone+Mail+Door" if B7 == 4
replace name = "Bridgeport" if B7 == 5
replace name = "Detroit" if B7 == 6
replace name = "Minneapolis03" if B7 == 7
replace name = "St.Paul" if B7 == 8
replace name = "Stonybrook" if B7 == 9
replace name = "Volunteer" if B7 == 10
replace name = "Professional" if B7 == 11
replace name = "Prof+Vol" if B7 == 12
replace name = "Civic08" if B7 == 13
replace name = "Hawthorne" if B7 == 14
replace name = "Self" if B7 == 15
replace name = "Neighbors" if B7 == 16
replace name = "MoveOn" if B7 == 17
replace name = "Minneapolis08" if B7 == 18
replace name = "Text" if B7 == 19
replace name = "Civic10" if B7 == 20
replace name = "Shame" if B7 == 21
replace name = "Pride" if B7 == 22
replace name = "PartyReg" if B7 == 23
replace name = "Planning" if B7 == 24
rename B1 salience
g samplesize = min(B2,B3)
rename B4 average
g interaction_sig = B5 if B6 > 1.96
g interaction_insig = B5 if B6 <= 1.96
rename B5 interaction
drop B7 B2 B3 B6

*Figure A1
reg interaction salience, r
predict p_unweighted
reg interaction salience [aw = salience], r
predict p_weighted
sort salience
graph twoway (line p_weighted p_unweighted salience) (scatter interaction_insig salience, ml(name)) (scatter interaction_sig salience, ml(name))
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Interactive Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Salience (Turnout in Control Group)
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.02 .06 .02, tickset(major) ruletype(range)
gr_edit .xaxis1.reset_rule 0 .8 .2, tickset(major) ruletype(range)
gr_edit .plotregion1.plot4.style.editstyle label(textstyle(size(vsmall))) editcopy
gr_edit .plotregion1.plot4.style.editstyle label(textstyle(color(black))) editcopy
gr_edit .plotregion1.plot4.style.editstyle marker(size(small)) editcopy
gr_edit .plotregion1.plot4.style.editstyle marker(fillcolor(black)) editcopy
gr_edit .plotregion1.plot4.style.editstyle marker(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot3.style.editstyle label(textstyle(size(vsmall))) editcopy
gr_edit .plotregion1.plot3.style.editstyle label(textstyle(color(gs5))) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(size(small)) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(symbol(circle_hollow)) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(fillcolor(gs5)) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(linestyle(color(gs5))) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(black)) editcopy
graph save "FigureA1.gph", replace
drop p_*

*Figure A2
reg interaction average, r
predict p_unweighted
reg interaction average [aw = salience], r
predict p_weighted
sort average
graph twoway (line p_weighted p_unweighted average) (scatter interaction_insig average, ml(name)) (scatter interaction_sig average, ml(name))
gr_edit .legend.draw_view.setstyle, style(no)
gr_edit .style.editstyle margin(vsmall) editcopy
gr_edit .style.editstyle boxstyle(shadestyle(color(white))) editcopy
gr_edit .style.editstyle boxstyle(linestyle(color(white))) editcopy
gr_edit .yaxis1.title.text = {}
gr_edit .yaxis1.title.text.Arrpush Interactive Effect
gr_edit .xaxis1.title.text = {}
gr_edit .xaxis1.title.text.Arrpush Strength of Treatment (Treatment Effect for Average Subject)
gr_edit .yaxis1.style.editstyle majorstyle(gridstyle(linestyle(color(white)))) editcopy
gr_edit .yaxis1.reset_rule -.02 .06 .02, tickset(major) ruletype(range)
gr_edit .xaxis1.reset_rule 0 .08 .02, tickset(major) ruletype(range)
gr_edit .plotregion1.plot4.style.editstyle label(textstyle(size(vsmall))) editcopy
gr_edit .plotregion1.plot4.style.editstyle label(textstyle(color(black))) editcopy
gr_edit .plotregion1.plot4.style.editstyle marker(size(small)) editcopy
gr_edit .plotregion1.plot4.style.editstyle marker(fillcolor(black)) editcopy
gr_edit .plotregion1.plot4.style.editstyle marker(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot3.style.editstyle label(textstyle(size(vsmall))) editcopy
gr_edit .plotregion1.plot3.style.editstyle label(textstyle(color(gs5))) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(size(small)) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(symbol(circle_hollow)) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(fillcolor(gs5)) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(linestyle(color(gs5))) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(color(black)) editcopy
gr_edit .plotregion1.plot1.style.editstyle line(pattern(dash)) editcopy
gr_edit .plotregion1.plot2.style.editstyle line(color(black)) editcopy
gr_edit .xaxis1.plotregion.xscale.curmax = .087
graph save "FigureA2.gph", replace
